package anji.plus.system.mark.dto;

import anji.plus.system.mark.base.BaseDomain;
import anji.plus.system.mark.domain.TaskNodeList;
import anji.plus.system.mark.vo.TaskListNode;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 任务表
 * </p>
 *
 * @author luwei
 * @since 2023-11-08
 */
@Data
public class TaskListDto {

    private static final long serialVersionUID = 1L;

    /**
     * 任务名称
     */
    @TableField("ID")
    private long id;

    /**
     * 任务名称
     */
    @TableField("TASK_NAME")
    private String taskName;

    /**
     * 任务截止时间
     */
    @TableField("TASK_END_TIME")
    private String taskEndTime;

    /**
     * 提交人，任务归属人员姓名
     */
    @TableField("CREATE_USER_NAME")
    private String createUserName;

    /**
     * 任务状态 1：任务确认待审核； 2：任务确认审核驳回；3：任务确认审核通过（进行中）；4.已超时 ；5. 任务完成待审核（已完成）；6： 任务完成审核驳回；7：任务完成审核通过；
     */
    @TableField("TASK_STATE")
    private Integer taskState;

    /**
     * 任务确认审核-备注（同意，驳回）
     */
    @TableField("CONFIRM_REASON")
    private String confirmReason;

    /**
     * 任务确认审核-审核人
     */
    @TableField("CONFIRM_REVIEW_USER")
    private String confirmReviewUser;

    /**
     * 任务完成提交-审核备注
     */
    @TableField("REVIEW_THE_NOTE")
    private String reviewTheNote;

    /**
     * 任务完成审核-原因（只有同意）
     */
    @TableField("COMPLETE_REASON")
    private String completeReason;

    /**
     * 任务完成审核-审核人
     */
    @TableField("COMPLETE_REVIEW_USER")
    private String completeReviewUser;

    /**
     * 是否删除  0  否  1 是
     */
    @TableField("IS_DEL")
    private Integer isDel;

    /**
     * 任务分数统计
     */
    @TableField("TASK_SCORE")
    private Double taskScore;

    @TableField("OVER_TIME")
    private Integer overTime;

    /**
     * 主任务备注
     */
    @TableField("MAIN_MARK")
    private String mainMark;

    /**
     * 任务确认流转备注
     */
    @TableField("CONFIRM_CHANGE_MARK")
    private String confirmChangeMark;


    /**
     * 任务完成流转备注
     */
    @TableField("COMPLETE_CHANGE_MARK")
    private String completeChangeMark;


    /**
     * 任务确认审核人-上次审核(流转前)
     */
    @TableField("LAST_CONFIRM_REVIEW_USER")
    private String lastConfirmReviewUser;

    /**
     * 任务确认流转备注-上次审核
     */
    @TableField("LAST_CONFIRM_CHANGE_MARK")
    private String lastConfirmChangeMark;

    /**
     * 任务完成审核人-上次审核(流转前)
     */
    @TableField("LAST_COMPLETE_REVIEW_USER")
    private String lastCompleteReviewUser;

    /**
     * 任务完成流转备注-上次审核
     */
    @TableField("LAST_COMPLETE_CHANGE_MARK")
    private String lastCompleteChangeMark;

    /**
     * 任务新增时间
     */
    private String createTime;

    public String getCreateTime(){
        if(this.createTime == null){
            return  "";
        }
        String result = createTime.substring(0,10);
        return result;
    }

    /**
     * 任务完成流转备注-上次审核
     */
    private String scheduleTime;

    /**
     * 节点信息list
     */
    private List<TaskNodeList> nodeList;

}
